﻿namespace MSSqlSchemaDoc.Core.DataStructures
{
    using System;
    using System.Collections.Generic;
    using System.Text;

    /// <summary>
    /// A list of common object type values for data structure objects.
    /// Use the "ToString()" method of the enumeration to get the string value out.
    /// </summary>
    public enum DataStructureObjectType
    {
        /// <summary>
        /// Object type "Table"
        /// </summary>
        Table,

        /// <summary>
        /// Documentation for a Table object.
        /// </summary>
        TableDocumentation,

        /// <summary>
        /// Data Manipulation Language (DML) triggers are linked to tables and fire
        /// when data is changed (manipulated).
        /// </summary>
        DmlTrigger,

        /// <summary>
        /// Documentation for a DML trigger object.
        /// </summary>
        DmlTriggerDocumentation,

        /// <summary>
        /// Data Definition Language (DDL) triggers are linked to that database and fire
        /// when there are schema (definition) or database level changes.
        /// </summary>
        DdlTrigger,

        /// <summary>
        /// Documentation for a DDL trigger object.
        /// </summary>
        DdlTriggerDocumentation,

        /// <summary>
        /// Object type "View"
        /// </summary>
        View,

        /// <summary>
        /// Documentation for a "View" object.
        /// </summary>
        ViewDocumentation,

        /// <summary>
        /// Object type "Stored Procedure"
        /// </summary>
        StoredProcedure,

        /// <summary>
        /// Documentation for a "Stored Procedure" object.
        /// </summary>
        StoredProcedureDocumentation,

        /// <summary>
        /// Object type "User Defined Function"
        /// </summary>
        UserDefinedFunction,

        /// <summary>
        /// Documentation for a "User Defined Function"
        /// </summary>
        UserDefinedFunctionDocumentation,

        /// <summary>
        /// Object type "Full Text Catalog"
        /// </summary>
        FullTextCatalog,

        /// <summary>
        /// Documentation for a "Full Text Catalog"
        /// </summary>
        FullTextCatalogDocumentation,

        /// <summary>
        /// Object type "Synonym"
        /// </summary>
        Synonym,

        /// <summary>
        /// Documentation for a "Synonym"
        /// </summary>
        SynonymDocumentation,
    }
}
